from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session

from app.database.config import DB_CONFIG, ACTIVE_DB, SQLALCHEMY_ECHO
from app.database import Base

# 1. 创建带连接池的引擎[2,11](@ref)
engine = create_engine(
    DB_CONFIG[ACTIVE_DB],
    pool_size=5,          # 连接池大小
    max_overflow=10,      # 最大溢出连接数
    echo=SQLALCHEMY_ECHO  # 调试模式
)

# 2. 线程安全的Session工厂[6,10](@ref)
SessionFactory = sessionmaker(
    bind=engine,
    expire_on_commit=False  # 解决DetachedInstanceError[11](@ref)
)
Session = scoped_session(SessionFactory)  # 多线程安全

# 3. 初始化数据库表
def init_db():
    Base.metadata.create_all(bind=engine)